typedef enum {
	ALBundleTypeMacApplication = 0,
	ALBundleTypePhoneApplication = 1,
	ALBundleTypePadApplication = 2,
	ALBundleTypeUniversalPhoneApplication = 3,
	ALBundleTypeFramework = 4,
	ALBundleTypeGenericBundle = 5,
	ALBundleTypeUnknown = 6
} ALBundleType;

typedef enum {
	ALElementTypeText,
	ALElementTypeBool,
	ALElementTypeDate,
	ALElementTypeRating,
	ALElementTypeAttachment
} ALElementType;

typedef enum {
	ALModeEvent,
	ALModeTimeline,
	ALModeChart
} ALDetailMode;
extern ALDetailMode const kALMinDetailMode;
extern ALDetailMode const kALMaxDetailMode;

typedef enum {
    ALAppCriteriaAllAppsCurrentVersion,
    ALAppCriteriaSelectedAppCurrentVersion,
    ALAppCriteriaSelectedAppAllVersions
} ALAppCriteria;

typedef enum {
    ALVersionsFilterModeCurrent,
    ALVersionsFilterModeAll,
    ALVersionsFilterModeDate
} ALVersionsFilterMode;


#pragma mark -
#pragma mark Entity keys

// TODO: GET RID OF THESE AND USE GENERATED INSERT INTO... METHOD
extern NSString* const ALAppEntity;
extern NSString* const ALVersionEntity;


#pragma mark -
#pragma mark Property keys
extern NSString* const ALTitleKey;
extern NSString* const ALAppIconKey;
extern NSString* const ALAppTypeKey;
extern NSString* const ALReleaseDateKey;
extern NSString* const ALAppKey;
extern NSString* const ALVersionsKey;
extern NSString* const ALLabelKey;
extern NSString* const ALEntryKey;
extern NSString* const ALEntriesKey;
extern NSString* const ALVersionKey;
extern NSString* const ALElementValueKey;
extern NSString* const ALCurrentAppKey;


#pragma mark String constant keys

extern NSString* const ALBundleIdentifierKey;
extern NSString* const ALEntryViewKey;
extern NSString* const ALDefaultTemplatesFile;
extern NSString* const ALDefaultEntryFiltersFile;
extern NSString* const ALAttachmentURLStringKey;
extern NSString* const ALLineNumberKey;
extern NSString* const ALElementTypeKey;
extern NSString* const ALElementTemplatesKey;
extern NSString* const ALInfoPListKey;
extern NSString* const ALEntryDescriptionKey;
extern NSString* const ALDataValueKey;
extern NSString* const ALRepresentedObjectKey;
extern NSString* const ALTemplateEditorNothingSelected;
extern NSString* const ALTemplateEditorMultipleSelection;
extern NSString* const ALTemplateEditorIsCollapsedKey;
extern NSString* const kALSelectedAppsKey;
extern NSString* const ALTemplateKey;
extern NSString* const ALTextPropertyWrapsKey;
extern NSString* const ALParentEntryKey;
extern NSString* const ALSelectedKey;
extern NSString* const kALDetailToolbarAllGroupIdentifier;
extern NSString* const kALDetailToolbarTagGroupIdentifier;
extern NSString* const kALDetailToolbarCustomGroupIdentifier;
extern NSString* const kALVersionsFilterKey;
extern NSString* const kALVersionsFilterBeginDateKey;
extern NSString* const kALVersionsFilterEndDateKey;
extern NSString* const kALSelectedEntryFilterTitleKey;
//extern NSString* const kALSelectedEntryFilterKey;


#pragma mark -
#pragma mark Generic string constants

extern NSString* const ALArrangedObjectsKey;
extern NSString* const ALFrameOriginKey;
extern NSString* const ALFrameSizeKey;
extern NSString* const ALBoundsKey;
extern NSString* const ALOpacityKey;
extern NSString* const ALSelectionIndexesKey;


#pragma mark -
#pragma mark Number constants

extern CGFloat const ALElementFontSizePrimary;
extern CGFloat const ALElementFontSizeSecondary;


#pragma mark -
#pragma mark Defaults

extern NSString* const ALModeSelection;
extern NSString* const ALToolbarVisible;
extern NSString* const ALToolbarShowsTitles;
extern NSString* const ALEditTemplateViewHeight;
extern NSString* const ALTemplateEditorIsVisible;
extern NSString* const ALTemplateFiltersKey;
//extern NSString* const ALInfoViewIsVisible;
extern NSString* const ALInfoViewLastWidthBeforeCloseKey;
extern NSString* const ALChartInfoAppCriteria;


#pragma mark -
#pragma mark Notifications

extern NSString* const ALModeDidChangeNotification;
extern NSString* const ALNewMode;
extern NSString* const ALCustomEntryFilterDidChangeNotification;


#pragma mark -
#pragma mark Utility functions

CGPoint SMRIntegralPoint(CGPoint aPoint);


#pragma mark -
#pragma mark Quicklook caching functions

@class ALEntry;

extern NSString* ALQuickLookCacheDirectory();
extern NSURL* CacheURLForEntry(ALEntry*);
extern NSArray* AttachmentURLsForEntry(ALEntry*);
extern void WriteCacheFilesForEntries(NSArray*);
extern void ClearQuicklookCacheFiles();

//extern NSArray* CurrentVersionsForDetailMode(ALDetailMode, NSManagedObjectContext*);
